"""
前置条件：登录用户进入首页
用例描述：搜索框搜索“小米手机5"，然后加入购物车
预期结果：购物车页面显示已添加的商品
后置条件：清空刚刚加入的商品
"""
# 导包
import allure
import pytest
from selenium.webdriver.common.by import By

import conftest
from PO.base.get_driver import GetDriver
from PO.page.page_cart import PageCart
from PO.page.page_goods_detail import PageGooddetail
from PO.page.page_index import  PageIndex
from PO.page.page_login import PageLogin
from PO.page.page_user_home import PageUserhome
from conftest import login_url
from utils.decorator import decorator
from utils.logger import Log

# TODO 测试类使用-------满足条件跳过
version=conftest.version
# 新建测试类
@allure.feature('购物车模块')
@pytest.mark.skipif(version =='测试',reason="正在调试其他脚本，此用例暂不执行")
class TestAddCar():
    # 初始化
    def setup_class(self):
        #初始化日志模块
        self.log = Log("加入购物车用例").get_logger()
        #获取driver
        self.driver=GetDriver().get_driver(login_url)
        #获取购物车页面对象
        self.mycart=PageCart(self.driver)

        with allure.step("前置条件：登录测试账号"):
            login_data=('18325530001','wsf123456','8888')
            self.mycart.base_qt_login(*login_data)
            self.log.info("登录用户：{}".format(login_data))
            #allure截图
            self.mycart.base_get_allure_image()

        #获取购物车页面对象
        self.mycart=PageCart(self.driver)
        #获取首页页面对象
        self.indexpage=PageIndex(self.driver)
        #获取个人中心页面对象
        self.userhome=PageUserhome(self.driver)
        #获取商品详情页面对象
        self.goodsdetail=PageGooddetail(self.driver)


    #结束方法
    def teardown_class(self):
        with allure.step("后置处理：清空购物车"):
            self.mycart.page_click_clear_btn()
            self.mycart.base_get_allure_image()
        with allure.step("后置处理：退出登录"):
            self.mycart.page_click_logout_btn()
            self.mycart.base_get_allure_image()
        self.driver=GetDriver().quit_driver()

    @decorator
    def test_addcart(self):
        with allure.step("测试步骤一：点击返回商城首页链接"):
            self.userhome.page_click_return_shop_link()
            self.mycart.base_get_allure_image()

        with allure.step("测试步骤二：搜索框输入“小米手机5"):
            self.indexpage.page_input_search_info("小米手机5")
            self.mycart.base_get_allure_image()

        with allure.step("测试步骤三：点击搜索按钮"):
            self.indexpage.page_click_search_btn()
            self.mycart.base_get_allure_image()

        with allure.step("测试步骤四：双击图片进入商品详情"):
            element=By.CSS_SELECTOR, ".lazy-list"
            self.indexpage.base_double_click(element)
            self.mycart.base_get_allure_image()

        with allure.step("测试步骤五：点击加入购物车按钮"):
            self.goodsdetail.page_click_add_car()
            self.mycart.base_get_allure_image()

        with allure.step("测试步骤六：关闭加入购物车成功提示框"):
            self.goodsdetail.page_close_normal_alert()
            self.mycart.base_get_allure_image()

        with allure.step("测试步骤七：进入我的购物车"):
            self.goodsdetail.page_click_my_cart()
            self.mycart.base_get_allure_image()

        with allure.step("断言：获取商品名称文本"):
            name=self.mycart.page_get_goods_name()
            self.mycart.base_get_allure_image()

        assert "小米手机5" in name

